I. Field
The present invention generally relates to device simulators. More particularly, the invention relates to computer applications for simulating devices.
II. Description of Related Art
Advances in technology have resulted in smaller and more powerful personal computing devices. For example, there currently exist a variety of portable personal computing devices, including wireless computing devices, such as portable wireless telephones, personal digital assistants (PDAs), and paging devices that are small, lightweight, and easily carried by users. More specifically, portable wireless telephones, for example, further include cellular telephones that communicate voice and data packets over wireless networks. Further, many such wireless telephones provide significant computing capabilities, and as such, are becoming tantamount to small personal computers and hand-held PDAs.
Typically, these smaller and more powerful personal computing devices are often resource constrained. For example, the screen size, the amount of available memory and file system space, and the amount of input and output capabilities may be limited by the small size of the device. Because of such severe resource constraints, it is can be desirable to maintain a limited size and quantity of software applications and other information residing on such personal computing devices (client computing devices).
Some of these personal computing devices utilize application programming interfaces (APIs) that are sometimes referred to as runtime environments and software platforms. The APIs can be installed onto a local computer platform and can be used to simplify the operation and programming of such devices by providing generalized calls for device specific resources. Further, some APIs can provide software developers the ability to create software applications that are fully executable on such devices. In addition, APIs can provide an interface between a personal computing device system hardware and the software applications. As such, the personal computing device functionality can be made available to the software applications without requiring the software developer to access the source code of the specific personal computing device. Further, some APIs can provide mechanisms for secure communications between personal devices, such as client devices and server systems, using secure cryptographic key information.
Examples of such APIs, some of which are discussed in more detail below, include those currently publicly available versions of the Binary Runtime Environment for Wireless® (BREW®), developed by Qualcomm, Inc. of San Diego, Calif. BREW® can be described as a thin veneer that exists over the operating system of a computing device, such as a wireless cellular phone. BREW® can provide one or more interfaces to hardware features particularly found on personal computing devices.
Further, BREW® is advantageous in that it can be provided on personal computing devices at a relatively low cost with respect to the demands on device resources and with respect to the prices typically paid by consumers for devices containing the BREW® API. Additionally, BREW® provides an end-to-end software distribution platform that includes a variety of benefits for wireless service operators, software developers and computing device consumers. One such currently available end-to-end software distribution platform includes logic distributed over a server-client architecture, wherein the server can perform billing, security, and application distribution functionality, and wherein the client can perform application execution, security and user interface functionality.
In order to develop software for various types of portable personal computing devices, it is sometimes necessary to physically possess and test the particular physical device for which the software is being developed. The possession of the physical device can allow a developer to execute the software loaded onto the physical device in order to debug the software and determine if the developed software provides the functionality intended by the developer. Alternatively, the software developer can use a device simulator, but such device simulators are typically static and tied to a single type and model of a physical device.
Accordingly it would be advantageous to provide an improved device simulator that can simulate multiple devices exhibiting multiple behaviors.